package com.christianposta.learnddd.domain.shared;

public interface Specification<T> {

	/**
	 * Check that t is satisfied by this specification
	 * @param t
	 * @return
	 */
	boolean isSatisfiedBy(T t);
	
	Specification<T> and(Specification<T> specification);
	Specification<T> or(Specification<T> specification);
	Specification<T> not(Specification<T> specification);
}
